package g_redis

import "github.com/redis/go-redis/v9"

type BaseRedisModel struct {
}

/*
IsCluster() 判断是否为集群
*/
func (brm *BaseRedisModel) IsCluster() (bool, error) {
	return getIsCluster()
}

/*
GetAloneClient() 获取单机版客户端
*/
func (brm *BaseRedisModel) GetAloneClient() (*redis.Client, error) {
	return getClientAlone()
}

/*
GetClusterClient() 获取集群客户端
*/
func (brm *BaseRedisModel) GetClusterClient() (*redis.ClusterClient, error) {
	return getClientCluster()
}

/*
GetClient() 直接获取客户端,底层来判断
*/
func (brm *BaseRedisModel) GetClient() (redis.Cmdable, error) {
	isCluster, err := getIsCluster()
	if err != nil {
		return nil, err
	}
	if isCluster {
		client, err := getClientCluster()
		if err != nil {
			return nil, err
		}
		return client, nil
	} else {
		client, err := getClientAlone()
		if err != nil {
			return nil, err
		}
		return client, nil
	}
}
